package cn.tedu.api;

import java.security.KeyStore;

//测试 多线程售票
public class Test4 {
    public static void main(String[] args) {
        MyTickets t1=new MyTickets();
        MyTickets t2=new MyTickets();
        MyTickets t3=new MyTickets();
        MyTickets t4=new MyTickets();
        //启动线程卖票
        t1.start();
        t2.start();
        t3.start();
        t4.start();

        //问题：四个人各卖了100张，总共卖了400张，不对，我们要求总共卖100张票
        //TODO 用接口方式  实现多线程 编程
        //分析原因
        //程序中，一共new了4次，每次对象都拥有变量int tickets=100；合着就拥有4份tickets
        //各卖各的，总共卖了400张
        //解决方案：tickets资源能在每个对象间共享
    }
}
//继承thread类实现多线程编程
class MyTickets extends Thread{
    //需求：设计4个售票窗口，总计售票100张
    static int tickets=100;//定义变量，记录票数
    //开始卖票业务--写在run（）--
    @Override
    public void run() {
        //一直卖票
        while (true){
            if (tickets>0){
                //放大招：如果多线程程序的数据，能够接受这次考验，那么，数据才是真的安全
                //问题：超卖，卖出了0和-1的票
                //问题：重卖，把同一张票卖了好几个人

                try {
                    Thread.sleep(10);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(getName()+"===="+tickets--);
            }else{
                break;
            }
        }
    }

}